1. Field of the Invention
The present invention relates to iterative decoding of encoded, packetized information at a receiver of a digital communications system.
2. Description of the Related Art
In many digital communications systems, user information is processed into an encoded (e.g., error-correction encoded) and/or packetized stream of data. The stream of data is then divided into discrete blocks for transport through a given transmission medium, where such transport might be defined through an operating standard. Often, these discrete blocks are themselves further encoded and/or further packetized for transport over the physical transmission medium. Each occurrence of transport processing might be considered a logical level, or “layer”.
Most high-speed digital data applications include logical levels organized as a series of layers, each one built upon its predecessor. The purpose of each layer is to offer services to the higher layers, shielding those layers from implementation details of lower layers. Between each pair of adjacent layers is an interface that defines those services. For example, the International Standards Organization has developed a layered network architecture called the Open Systems Interconnection (OSI) Reference model that has seven layers: application, presentation, session, transport, network, data link, and physical layers. For example, computers communicating through the Internet might use transport control protocol (TCP) at the transport layer, the Internet protocol (IP) at the network layer in TCP/IP packet networks, and logical link control (LLC) at the data link layer. A layer might be further divided into two or more (vertical or horizontal) sub-layers, where each sub-layer is designed to accomplish a specific function.
The function of the lowest level, the physical layer, is to transfer bits over the communication medium. The function of the higher layers (e.g., data link layer) is to partition input data into data frames and transmit the data frames over the lower layers (e.g., physical layer) sequentially. Each data frame usually includes a header that contains control, sequence, and error detection (and possibly error correction) information for the frame.
One high-speed digital data application organized as a series of layers is specified in the digital video broadcast (DVB) standard, currently proposed and in development as a European telecommunications standard. The DVB standard specifies techniques for the transmission of video data, such as MPEG-2 (Moving Pictures Experts Group, phase 2) transport stream (TS) packets. For terrestrial applications, the standard extension is DVB-T (see “Digital Video Broadcasting (DVB); Framing structure, channel coding and modulation for digital terrestrial television,” European Broadcasting Union—Union Europenne de Radio-Tlvision, ETSI EN 300 744 v1.5.1 (2004), the teachings of which are incorporated herein by reference), while, for handheld (mobile) applications, the standard extension is DVB-H (see “Digital Video Broadcasting (DVB); Transmission System for Handheld Terminals (DVB-H),” European Broadcasting Union—Union Europenne de Radio-Tlvision, ETSI EN 302 304 V1.1.1 (2004), the teachings of which are incorporated herein by reference). DVB transports MPEG-2 TS packets as a sequence of datagrams. DVB-H, unlike DVB-T, employs multi-protocol encapsulated (MPE) Internet Protocol (IP) datagrams with forward error correction (FEC). MPE FEC divides the MPEG-2 TS packet into a series of IP datagrams, and encodes the IP datagrams into datagram sections with an FEC code, such as a Reed-Solomon code. Thus, DVB transports data with at least two logical layers: i) the MPEG-2 TS packet layer and ii) a logical layer comprising the MPE IP datagrams (the parsed MPEG-2 packets at a low-level data link layer and the FEC-encoded MPE IP datagrams.
Often, to improve coding gain and decrease a bit error rate (BER) seen at a receiver, multiple-code techniques are used for encoding data at a specific logical layer. Concatenated code systems for encoding and decoding data use two or more component codes that are concatenated during the process of encoding the data. Although the component codes may be of any type, the component codes are typically relatively simple codes such as convolutional codes. The two or more component codes are concatenated either in serial or in parallel. For example, in serial concatenation of two component codes, data is first encoded by a first encoding module with a first component code. This encoded data is, in turn, passed through an interleaver and then applied to a second encoding module for encoding with a second component code. This process operates on only a single, serial data stream, and the first and second component codes may be the same code. In the parallel concatenation, in one processing path data is encoded with the first component code and in the other processing path data is interleaved and then is encoded with a second component code. The two encoded streams are combined in parallel by, for example, interleaving to provide a single encoded data stream, and the first and second component codes may be the same code.
Concatenated code systems may employ iterative decoding of encoded data using either serial or parallel iterative decoding methods. When employing iterative decoding of data encoded with a concatenated code, a block of data is input to the iterative decoder. The block boundaries desirably conform to symbol boundaries of the concatenated code. The iterative decoder may comprise N component code decoders for decoding in accordance with each of the N component codes originally used to encode the data. The particular implementation of the iterative decoder is dependent on whether the encoding process was based on serial or parallel concatenation.
In an iterative decoding method, the complete decoding process during each iteration subjects a block of encoded data to decoding by each of the N component code decoders. The complete decoding process repeats for each iteration until a predetermined number (I) of decoding iterations are complete. A complete, “soft” decoding of the data encoded with a concatenated code is performed during each iteration, (i.e., a decoding with each component code of the concatenated code to generate a soft decision for the bit and a reliability value related to the probability that the soft decision is correct). Each iteration allows for higher confidence in the decisions for bits in the decoded data that are made based on the soft-output values provided from the detector.
However, for iterative decoding schemes, the decoding occurs at a specific logical layer (e.g., the physical layer) with a known relationship between the component codes. This known relationship allows the soft-output values of a decoding of a given component code to be used as a priori information that is used during subsequent decoding of a different component code.